PROJECT(findCURL)
SET(TARGET demo)

# 指定生成存放可执行文件的目录
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)

# 指定生成存放库文件的目录
SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)

# 指定信赖cmake最小的版本号
CMAKE_MINIMUM_REQUIRED(VERSION 1.0)

# 将指定目录下所有源代码文件以列表形式存储到指定变量中
AUX_SOURCE_DIRECTORY(src DIR_SRCS)

ADD_EXECUTABLE(${TARGET} ${DIR_SRCS})

# 定义target信赖的其他target,确保编译本target之前,其他target已经被构建 
# ADD_DEPENDENCIES(${TARGET} depend-target1 depend-target2)

# 定义测试命令
ENABLE_TESTING()
#ADD_TEST(testname Exename arg1 arg2 ...)
ADD_TEST(demoTest ${PROJECT_BINARY_DIR}/bin/${TARGET})

# 向C/C++编译选项(CMAKE_C_FLAGS or CMAKE_CXX_FLAGS)
ADD_DEFINITIONS(-DENABLE_DEBUG -DMAX_NUM=10)

# 指定二进制、动态库和静态库安装
INSTALL(TARGETS ${TARGET}
	RUNTIME DESTINATION bin
	LIBRARY DESTINATION lib
	ARCHIVE DESTINATION libstatic)

# 指定普通文件安装
#INSTALL(FILES COPYRIGHT README
#	DESTINATION share/doc/${TARGET})

# 指定非目标文件的可执行程序安装
#INSTALL(PROGRAMS rundemo.sh
#	DESTINATION bin)

# 指定目录的安装
#INSTALL(DIRECTORY doc/
#	DESTINATION share/doc/${TARGET})

# 查找依赖模块CURL,对于系统预定义Find<name>.cmake模块，一般使用如下方法
FIND_PACKAGE(CURL)
IF(CURL_FOUND)
	INCLUDE_DIRECTORIES(${CURL_INCLUDE_DIR})
	TARGET_LINK_LIBRARIES(${TARGET} ${CURL_LIBRARY})
ELSE(CURL_FOUND)
	MESSAGE(FATAL_ERROR "CURL library not found")
ENDIF(CURL_FOUND)

# 测试cmake常用变量
MESSAGE("--- cmake常用变量 ---")
# 工程编译目录
MESSAGE("CMAKE_BINARY_DIR        : " ${CMAKE_BINARY_DIR})
MESSAGE("PROJECT_BINARY_DIR      : " ${PROJECT_BINARY_DIR})
MESSAGE("<projectname>_BINARY_DIR: " ${hello_BINARY_DIR})
# 工程顶层目录
MESSAGE("CMAKE_SOURCE_DIR        : " ${CMAKE_SOURCE_DIR})
MESSAGE("PROJECT_SOURCE_DIR      : " ${PROJECT_SOURCE_DIR})
MESSAGE("<projectname>_SOURCE_DIR: " ${hello_SOURCE_DIR})
# 当前处理的CMakeLists.txt所在的路径
MESSAGE("CMAKE_CURRENT_SOURCE_DIR: " ${CMAKE_CURRENT_SOURCE_DIR})
# TARGET编译目录
MESSAGE("CMAKE_CURRENT_BINARY_DIR: " ${CMAKE_CURRENT_BINARY_DIR})
# 正在执行CMAkeLists.txt文件的完整路径
MESSAGE("CMAKE_CURRENT_LIST_FILE : " ${CMAKE_CURRENT_LIST_FILE})
# 当前所在的行
MESSAGE("CMAKE_CURRENT_LIST_LINE : " ${CMAKE_CURRENT_LIST_LINE})
# cmake模块所在的路径
MESSAGE("CMAKE_MODULE_PATH       : " ${CMAKE_MODULE_PATH})
# 存放可执行文件的目录
MESSAGE("ECUTABLE_OUTPUT_PATH    : " ${EXECUTABLE_OUTPUT_PATH})
# 存放库文件的目录
MESSAGE("LIBRARY_OUTPUT_PATH     : " ${LIBRARY_OUTPUT_PATH})
# 项目名称
MESSAGE("PROJECT_NAME            : " ${PROJECT_NAME})

MESSAGE("--- 系统信息 ---")
# 版本号
MESSAGE("CMAKE_MAJOR_VERSION     : " ${CMAKE_MAJOR_VERSION})
MESSAGE("CMAKE_MINOR_VERSION     : " ${CMAKE_MINOR_VERSION})
MESSAGE("CMAKE_PATCH_VERSION     : " ${CMAKE_PATCH_VERSION})
# 系统名称
MESSAGE("CMAKE_SYSTEM            : " ${CMAKE_SYSTEM})
# 不包含版本的系统名
MESSAGE("CMAKE_SYSTEM_NAME       : " ${CMAKE_SYSTEM_NAME})
# 系统版本
MESSAGE("CMAKE_SYSTEM_VERSION    : " ${CMAKE_SYSTEM_VERSION})
# 处理器名称
MESSAGE("CMAKE_SYSTEM_PROCESSOR  : " ${CMAKE_SYSTEM_PROCESSOR})
# 在所有的类 UNIX 平台为 TRUE
MESSAGE("UNIX                    : " ${UNIX})
# 在所有的 win32 平台为 TRUE
MESSAGE("WIN32                   : " ${WIN32})
